iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
自我挑戰組

每日LeetCode解題紀錄系列 第 23

LeetCode解題 Day23

  • 分享至 

  • xImage
  •  

1328. Break a Palindrome

https://leetcode.com/problems/break-a-palindrome/


題目解釋

你會得到一個字串palindrome,該字串全是小寫字母且是回文

請在替換一個英文字母的情況把回文破壞掉,回傳字典順序最小的那組答案

如果替換一個英文字母沒辦法破壞回文的話,就回傳空字串

example

https://i.imgur.com/ZMRbnWB.png


解法

這題因為「替換掉一個英文字母」、「回傳字典順序最小的那組」的兩個條件,讓這題變得比較單純了點

首先,他的限制已經有說明所有的輸入都是回文,那就代表我們隨便改一個字都能破壞回文,不過為了要符合題目的條件,我們要把任一個字母改成'a'才能符合「回傳字典順序最小的那組」

那我們就檢查前半部哪個的字母不是'a'就好;如果前半部全都是'a',就把最後一個字改成'b'

程式碼

class Solution:
    def breakPalindrome(self, palindrome: str) -> str:
        
        if len(palindrome) == 1: return ''
        
        for i in range(len(palindrome) // 2):
            if palindrome[i] != 'a':
                return palindrome[:i] + 'a' + palindrome[i+1:]
        
        return palindrome[:-1] + 'b' 

上一篇
LeetCode解題 Day22
下一篇
LeetCode解題 Day24
系列文
每日LeetCode解題紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言